/*
 * SPDX-FileCopyrightText: 2023-2024 Andrew Gunnerson
 * SPDX-License-Identifier: GPL-3.0-only
 */

package com.sanji.audio_test.extension

import android.telecom.Call
import com.sanji.audio_test.output.PhoneNumber

/**
 * 扩展属性，用于从通话详情中获取电话号码
 * 
 * 该属性通过以下步骤获取电话号码：
 * 1. 从 Call.Details 中获取 handle（通话句柄）
 * 2. 从 handle 中提取 phoneNumber（电话号码字符串）
 * 3. 尝试将电话号码字符串转换为 PhoneNumber 对象
 * 4. 如果转换失败（例如格式不正确），则返回 null
 */
val Call.Details.phoneNumber: PhoneNumber?
    get() = handle?.phoneNumber?.let {
        try {
            // 尝试使用电话号码字符串创建 PhoneNumber 对象
            PhoneNumber(it)
        } catch (e: IllegalArgumentException) {
            // 如果电话号码格式无效，返回 null 而不是抛出异常
            null
        }
    }